package Persistencia;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

import Negocio.Carga;
import Negocio.Cliente;
import Negocio.ClienteEmpresa;
import Negocio.ClienteParticular;
import Negocio.CuentaCorriente;
import Negocio.Deposito;
import Negocio.Destinatario;
import Negocio.EmpresaRegular;
import Negocio.Envio;
import Negocio.EnvioInterSucursal;
import Negocio.EnviosXDestino;
import Negocio.ItemCreditoCC;
import Negocio.ItemCuentaCorriente;
import Negocio.ItemDebitoCC;
import Negocio.ItemPlanMantenimiento;
import Negocio.Mantenimiento;
import Negocio.NovedadesVehiculo;
import Negocio.PlanMantenimiento;
import Negocio.Ruta;
import Negocio.Sucursal;
import Negocio.Vehiculo;
import Negocio.Viaje;
import Negocio.ViajeInterSucursal;
import Negocio.ViajePuertaAPuerta;

public class HibernateUtil {
	private static final SessionFactory sessionFactory;

	static {
		try {
			AnnotationConfiguration config = new AnnotationConfiguration();

			config.addAnnotatedClass(CuentaCorriente.class);
			config.addAnnotatedClass(ItemCuentaCorriente.class);
			config.addAnnotatedClass(ItemCreditoCC.class);
			config.addAnnotatedClass(ItemDebitoCC.class);
			config.addAnnotatedClass(Cliente.class);
			config.addAnnotatedClass(ClienteParticular.class);
			config.addAnnotatedClass(ClienteEmpresa.class);
			config.addAnnotatedClass(EmpresaRegular.class);
			config.addAnnotatedClass(Vehiculo.class);
			config.addAnnotatedClass(NovedadesVehiculo.class);
			config.addAnnotatedClass(PlanMantenimiento.class);
			config.addAnnotatedClass(ItemPlanMantenimiento.class);			
			config.addAnnotatedClass(Mantenimiento.class);			
			config.addAnnotatedClass(Sucursal.class);			
			config.addAnnotatedClass(Deposito.class);
			config.addAnnotatedClass(Envio.class);
			config.addAnnotatedClass(EnvioInterSucursal.class);
			config.addAnnotatedClass(EnviosXDestino.class);
			config.addAnnotatedClass(Destinatario.class);
			config.addAnnotatedClass(Carga.class);
			config.addAnnotatedClass(Ruta.class);
			config.addAnnotatedClass(Viaje.class);
			config.addAnnotatedClass(ViajeInterSucursal.class);
			sessionFactory = config.buildSessionFactory();
		} catch (Throwable ex) {
			System.err.println("Initial SessionFactory creation failed." + ex);

			throw new ExceptionInInitializerError(ex);
		}
	}

	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
}
